home *** CD-ROM | disk | FTP | other *** search
- {
- I recently found out that you can adjust the colours regardless of what
- video mode you happen to be in. Play around with this program ...
-
- ------------------- 8< ------------------------------------
- { Simple little program to "fade" out text on the screen.
-
- Feel free to play around with it ...
-
- Doesn't fully work, but should give you a good idea. Note that it requires
- a VGA (or better) graphics card. }
-
- USES CRT;
-
- CONST
- { Colour of DOS text. }
- DOS_COLOUR = LIGHTGRAY;
-
- TYPE
- PaletteType = RECORD
- R, G, B : BYTE;
- End;
-
- VAR
- Colour,
- ColourCnt : BYTE;
- AllColours : ARRAY[ 0..63 ] OF PaletteType;
-
- BEGIN
- FOR Colour := 0 TO 16 DO
- Begin
- TextColor( Colour );
- WriteLn( 'This is some text' );
- End;
-
- { Read in all the colours of the palette into an array. }
- FOR Colour := 0 TO 63 DO
- Begin
- { Indicate that the palette registers are going to be read }
- Port[ $3C7 ] := 0;
-
- AllColours[ Colour ].R := Port[ $3C9 ];
- AllColours[ Colour ].G := Port[ $3C9 ];
- AllColours[ Colour ].B := Port[ $3C9 ];
- End;
-
- { Fade out any text that is on the screen. }
- WHILE AllColours[ 61 ].B > 1 DO
- FOR Colour := 0 TO 63 DO
- Begin
- Port[ $3C8 ] := Colour;
-
- IF AllColours[ Colour ].R > 0 THEN
- DEC( AllColours[ Colour ].R );
-
- IF AllColours[ Colour ].G > 0 THEN
- DEC( AllColours[ Colour ].G );
-
- IF AllColours[ Colour ].B > 0 THEN
- DEC( AllColours[ Colour ].B );
-
- Port[ $3C9 ] := AllColours[ Colour ].R;
- Port[ $3C9 ] := AllColours[ Colour ].G;
- Port[ $3C9 ] := AllColours[ Colour ].B;
-
- Delay( 10 );
- End;
-
- TextColor( DOS_COLOUR );
-
- ClrScr;
- WriteLn( 'Watch me fade back in ...' );
-
- FOR ColourCnt := 0 TO 42 DO
- Begin
- Port[ $3C8 ] := DOS_COLOUR;
-
- Port[ $3C9 ] := ColourCnt;
- Port[ $3C9 ] := ColourCnt;
- Port[ $3C9 ] := ColourCnt;
-
- Delay( 20 );
- End;
- END.